package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 版本1--封装【拓展】
 * Mysql工具类
 * 1.数据库：地址、用户名、密码、私有属性--静态化【本类直接调用】
 * 2.静态方法【本类直接调用】 getParam(String 路径)
 * 目的：使用方法迪奥用外部文件  db_mysql.properties
 *  db_mysql.properties  对应  Java Properties类：读取键值对形式信息
 *  Properties类  提供方法  load() 读取配置文件【键值对-数据库基本信息】
 * 3.通过封装概念--链接成功数据库【通过一个类链接Mysql和Oracle】
 */

public class Mysql {
    //1.任何数据库具备：地址、用户名、密码--属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)  ---- 链接数据库--读取信息
    //2.1 配置文件：键值对出现，保存数据库对应的基本信息 xxx.properties

    public static void getParam(String fileName) throws IOException {
        //2.2Properties类--读取xxx.properties配置文件
        Properties p=new Properties();
        //2.3外置文件读取---借助IO---搬运数据---InputStream
        //Mysql.class  表示当前  Mysql类的Class对象
        //理解：图书馆--划分区域存Mysql相关书籍
        //getClassLoader()  获取当前类的加载器【加载器负责读取配置文件信息】
        //理解：图书馆--划分区域存Mysql相关书籍--图书管理员
        //getResourceAsStream(文件) 获取当前加载器中键值对信息
        //理解：图书馆--划分区域存Mysql相关书籍--图书管理员--拿明确的书籍
        InputStream fis=
    Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);
        //2.4 读取数据库基本信息【url、用户、密码】赋值给当前对象【url、用户、密码】
        //Properties类-- 提供方法  getProperty() 读取db_mysql.properties
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        System.out.println("测试连接成功"+url+username+password);
    }

    public static void main(String[] args) throws IOException, SQLException {
        //测试封装概念--链接成功数据库
        Mysql.getParam("db_mysql.properties");
//        Mysql.getParam("db_oracle.properties");
        //1.创建链接---Connection 代表Java链接成功数据库
        Connection con=DriverManager.getConnection(url,username,password);
        //2.执行sql---Statement  代表Java执行数据库sql
        Statement st=con.createStatement();
        //3.【CRUD操作：增删改 executeUpdate()  查 executeQuery】
        //   String sql="delete  from book where id=3";
        String sql="Update book set author='顾涵' where id=6";
        int rows=st.executeUpdate(sql);
        System.out.println("成功添加了"+rows+"条数据");
        //4.关闭链接 --Statement --Connection
        st.close();
        con.close();


    }

}
